package com.cskaoyan.javase.object._5finalize;

import java.util.Scanner;

/**
 * finalize方法的声明和方法体比较简单，如下：
 *
 * protected void finalize() throws Throwable { }
 * 首先注意访问权限是protected，这说明在不重写访问权限的情况下，仅能够在自身类中创建自身对象，才能调用这个方法。
 *
 * 其次它的方法体是空的，功能没有实现，这种设计的目的是为了让子类自己去重写该方法的实现。这种做法比起抽象方法的强制子类实现，要更加灵活，而且可以用在普通类中。
 *
 * 最后，它的方法声明中有一个throws Throwable， 这是方法抛出异常列表的声明，现在不用管它，后面会讲。
 *
 *
 *
 * @since 17:04
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        // new Student();
        // System.gc();
        System.out.println("----------------");
        Scanner sc = new Scanner(System.in);

        System.out.println("请输入一个字符~~~");
        String str = sc.nextLine();
        System.out.println(str);

        // 关闭资源
        sc.close();
        sc.nextLine();
    }
}

class Student {
    @Override
    protected void finalize() throws Throwable {
        System.out.println("模拟释放资源代码~~~");
    }
}